import request from '@/config/axios'

// 客户管理 VO
export interface ContractInfoVO {
  id: number // 主键，自增，用于唯一标识每条记录
  enterpriseCode: string // 企业的唯一标识码，用于区分不同客户
  enterpriseName: string // 企业的全称或常用名称
  source: string // 客户来源渠道，例如线上推广、线下活动、合作伙伴推荐等
  customerCategory: string // 客户的业务类型分类，如数据中心、零售、制造业等
  customerLevel: string // 客户的重要等级，如A级、B级、C级，用于资源分配
  contactPerson: string // 客户方的主要联系人姓名
  mobileNumber: string // 联系人的手机号码
  customerManager: string // 负责该客户的内部销售或服务经理
  customerDescription: string // 对客户的业务、合作背景或其他重要信息的简要描述
  contractAmount: number // 与客户签订的合同总金额
  initialReceivable: number // 会计期间开始时的应收账款余额
  receivableAmount: number // 当期应收取的款项总额
  receivedAmount: number // 当期实际收到的款项总额
  receivableBalance: number // 当期未收回的款项余额
  advancePayment: number // 客户提前支付的款项（如预付款）
  creationTime: Date // 记录创建的具体时间（年-月-日 时:分:秒），默认为当前时间
  isEnabled: boolean // 布尔值，表示该记录是否处于启用状态（如 TRUE 表示启用，FALSE 表示停用），默认为 TRUE
  operationDescription: string // 对记录的操作历史描述（如编辑内容、关联账号、删除原因等）
}

// 客户管理 API
export const ContractInfoApi = {
  // 查询客户管理分页
  getContractInfoPage: async (params: any) => {
    return await request.get({ url: `/server/contract-info/page`, params })
  },

  // 查询客户管理详情
  getContractInfo: async (id: number) => {
    return await request.get<ContractInfoVO>({ url: `/server/contract-info/get?id=` + id })
  },

  // 新增客户管理
  createContractInfo: async (data: ContractInfoVO) => {
    return await request.post({ url: `/server/contract-info/create`, data })
  },

  // 修改客户管理
  updateContractInfo: async (data: ContractInfoVO) => {
    return await request.put({ url: `/server/contract-info/update`, data })
  },

  // 删除客户管理
  deleteContractInfo: async (id: number) => {
    return await request.delete({ url: `/server/contract-info/delete?id=` + id })
  },

  // 导出客户管理 Excel
  exportContractInfo: async (params) => {
    return await request.download({ url: `/server/contract-info/export-excel`, params })
  },
  getContractInfoList: async () => {
    return await request.get<ContractInfoVO[]>({ url: `/server/contract-info/list`})
  },
}
